package com.ctshk.rpc.starvip.dto.start_vip.member.register;

import com.ctshk.rpc.starvip.dto.start_vip.user.*;
import com.ctshk.rpc.starvip.util.JAXBDateFromater;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * @Author: 李新科
 * @CreateTime: 2021-05-25
 * @Description: 会员注册联系人信息
 */
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@XmlRootElement(name = "Contact")
public class RegisterContact implements Serializable {
    /**
     * 集团客户编号
     */
    @XmlElement(name = "Id")
    private String id;
    /**
     * 集团客户编码
     * (在一部分接口里面客户ID是这个字段)
     */
    @XmlElement(name = "ContactId")
    private String contactId;
    /**
     * 主要手机号码
     */
    @XmlElement(name = "CellularPhone")
    private String cellularPhone;
    /**
     * 电子邮件
     */
    @XmlElement(name = "EmailAddress")
    private String emailAddress;
    /**
     * 证件号码
     */
    @XmlElement(name = "CTSIdentityNum")
    private String ctsIdentityNum;
    /**
     * 证件类型
     */
    @XmlElement(name = "CTSIdentityType")
    private String ctsIdentityType;
    /**
     * 客户类型
     */
    @XmlElement(name = "CustomerValue")
    private String customerValue;
    @XmlElement(name = "BirthDate")
    @XmlJavaTypeAdapter(value = JAXBDateFromater.class)
    private LocalDate birthDate;
    @XmlElement(name = "FirstName")
    private String firstName;
    @XmlElement(name = "Income")
    private BigDecimal income;
    @XmlElement(name = "JobTitle")
    private String jobTitle;
    @XmlElement(name = "LastName")
    private String lastName;
    @XmlElement(name = "ContactNameSpell")
    private String contactNameSpell;
    @XmlElement(name = "MF")
    private String mf;
    @XmlElement(name = "MM")
    private String mm;
    @XmlElement(name = "MaritalStatus")
    private String maritalStatus;
    @XmlElement(name = "MiddleName")
    private String middleName;
    @XmlElement(name = "Status")
    private String status;
    @XmlElement(name = "SuppressAllCalls")
    private String suppressAllCalls;
    @XmlElement(name = "SuppressAllEmails")
    private String suppressAllEmails;
    @XmlElement(name = "SuppressAllFaxes")
    private String suppressAllFaxes;
    @XmlElement(name = "SuppressAllMailings")
    private String suppressAllMailings;
    @XmlElement(name = "CTSBirthPlace")
    private String ctsBirthPlace;
    @XmlElement(name = "CTSCity")
    private String ctsCity;
    @XmlElement(name = "CTSCompany")
    private String ctsCompany;
    @XmlElement(name = "CTSContactStatus")
    private String ctsContactStatus;
    @XmlElement(name = "CTSFoodGeneralFlg")
    private String ctsFoodGeneralFlg;
    @XmlElement(name = "CTSFoodMuslimFlg")
    private String ctsFoodMuslimFlg;
    @XmlElement(name = "CTSFoodVegetarianFlg")
    private String ctsFoodVegetarianFlg;
    @XmlElement(name = "CTSFstName")
    private String ctsFstName;
    @XmlElement(name = "CTSHobbyCultureFlg")
    private String ctsHobbyCultureFlg;
    @XmlElement(name = "CTSHobbyFashionFlg")
    private String ctsHobbyFashionFlg;
    @XmlElement(name = "CTSHobbyMovieFlg")
    private String ctsHobbyMovieFlg;
    @XmlElement(name = "CTSHobbyMusicFlg")
    private String ctsHobbyMusicFlg;
    @XmlElement(name = "CTSHobbyShoppingFlg")
    private String ctsHobbyShoppingFlg;
    @XmlElement(name = "CTSHobbySportFlg")
    private String ctsHobbySportFlg;
    @XmlElement(name = "CTSHobbyTravelFlg")
    private String ctsHobbyTravelFlg;
    @XmlElement(name = "CTSIndustry")
    private String ctsIndustry;
    @XmlElement(name = "CTSLanguage")
    private String ctsLanguage;
    @XmlElement(name = "CTSLastName")
    private String ctsLastName;
    @XmlElement(name = "CTSWord")
    private String ctsWord;
    @XmlElement(name = "EducationalBackground")
    private String educationalBackground;
    @XmlElement(name = "PartyTypeCode")
    private String partyTypeCode;
    @XmlElement(name = "Race")
    private String race;
    @XmlElement(name = "SuppressAllSMS")
    private String suppressAllSMS;

    @XmlElement(name = "ListOfLoyMember")
    private ListOfLoyMember listOfLoyMember;
    /**
     * <pre>
     * ListOfContactOrganization
     * </pre>
     */
    @XmlElement(name = "ListOfContact_Organization")
    private ListOfContactOrganization listOfContactOrganization;

    /**
     * <pre>
     * ListOfAlternatePhone
     * </pre>
     */
    @XmlElement(name = "ListOfAlternatePhone")
    private ListOfAlternatePhone listOfAlternatePhone;

    /**
     * <pre>
     * ListOfLoyCommunicationFax
     * </pre>
     */
    @XmlElement(name = "ListOfLoyCommunicationFax")
    private ListOfLoyCommunicationFax listOfLoyCommunicationFax;

    /**
     * <pre>
     * ListOfLoyCommunicationSms
     * </pre>
     */
    @XmlElement(name = "ListOfLoyCommunicationSms")
    private ListOfLoyCommunicationSms listOfLoyCommunicationSms;

    /**
     * <pre>
     * ListOfPersonalAddress
     * </pre>
     */
    @XmlElement(name = "ListOfPersonalAddress")
    private ListOfPersonalAddress listOfPersonalAddress;

    @XmlElement(name = "ListOfCtsMobilePhone")
    private ListOfCtsMobilePhone listOfCtsMobilePhone;

    @XmlElement(name = "ListOfContact_Account")
    private ListOfContactAccount listOfContactAccount;

    @XmlElement(name = "ListOfContactAccountAffiliation")
    private ListOfContactAccountAffiliation listOfContactAccountAffiliation;

    @XmlElement(name = "ListOfContactNote")
    private ListOfContactNote listOfContactNote;

    @XmlElement(name = "ListOfPartyRelationshipTo")
    private ListOfPartyRelationshipTo listOfPartyRelationshipTo;


    @XmlTransient
    public LocalDate getBirthDate() {
        return birthDate;
    }

    @XmlTransient
    public String getFirstName() {
        return firstName;
    }

    @XmlTransient
    public String getContactId() {
        return contactId;
    }

    @XmlTransient
    public String getCtsCity() {
        return ctsCity;
    }

    @XmlTransient
    public ListOfContactAccount getListOfContactAccount() {
        return listOfContactAccount;
    }

    @XmlTransient
    public ListOfContactAccountAffiliation getListOfContactAccountAffiliation() {
        return listOfContactAccountAffiliation;
    }

    @XmlTransient
    public ListOfContactNote getListOfContactNote() {
        return listOfContactNote;
    }

    @XmlTransient
    public ListOfPartyRelationshipTo getListOfPartyRelationshipTo() {
        return listOfPartyRelationshipTo;
    }

    @XmlTransient
    public String getId() {
        return id;
    }

    @XmlTransient
    public String getCellularPhone() {
        return cellularPhone;
    }

    @XmlTransient
    public String getEmailAddress() {
        return emailAddress;
    }

    @XmlTransient
    public String getCtsIdentityNum() {
        return ctsIdentityNum;
    }

    @XmlTransient
    public String getCtsIdentityType() {
        return ctsIdentityType;
    }

    @XmlTransient
    public ListOfLoyMember getListOfLoyMember() {
        return listOfLoyMember;
    }

    @XmlTransient
    public String getCustomerValue() {
        return customerValue;
    }

    @XmlTransient
    public BigDecimal getIncome() {
        return income;
    }

    @XmlTransient
    public String getJobTitle() {
        return jobTitle;
    }

    @XmlTransient
    public String getLastName() {
        return lastName;
    }

    @XmlTransient
    public String getContactNameSpell() {
        return contactNameSpell;
    }

    @XmlTransient
    public String getMf() {
        return mf;
    }

    @XmlTransient
    public String getMm() {
        return mm;
    }

    @XmlTransient
    public String getMaritalStatus() {
        return maritalStatus;
    }

    @XmlTransient
    public String getMiddleName() {
        return middleName;
    }

    @XmlTransient
    public String getStatus() {
        return status;
    }

    @XmlTransient
    public String getSuppressAllCalls() {
        return suppressAllCalls;
    }

    @XmlTransient
    public String getSuppressAllEmails() {
        return suppressAllEmails;
    }

    @XmlTransient
    public String getSuppressAllFaxes() {
        return suppressAllFaxes;
    }

    @XmlTransient
    public String getSuppressAllMailings() {
        return suppressAllMailings;
    }

    @XmlTransient
    public String getCtsBirthPlace() {
        return ctsBirthPlace;
    }

    @XmlTransient
    public String getCtsCompany() {
        return ctsCompany;
    }

    @XmlTransient
    public String getCtsContactStatus() {
        return ctsContactStatus;
    }

    @XmlTransient
    public String getCtsFoodGeneralFlg() {
        return ctsFoodGeneralFlg;
    }

    @XmlTransient
    public String getCtsFoodMuslimFlg() {
        return ctsFoodMuslimFlg;
    }

    @XmlTransient
    public String getCtsFoodVegetarianFlg() {
        return ctsFoodVegetarianFlg;
    }

    @XmlTransient
    public String getCtsFstName() {
        return ctsFstName;
    }

    @XmlTransient
    public String getCtsHobbyCultureFlg() {
        return ctsHobbyCultureFlg;
    }

    @XmlTransient
    public String getCtsHobbyFashionFlg() {
        return ctsHobbyFashionFlg;
    }

    @XmlTransient
    public String getCtsHobbyMovieFlg() {
        return ctsHobbyMovieFlg;
    }

    @XmlTransient
    public String getCtsHobbyMusicFlg() {
        return ctsHobbyMusicFlg;
    }

    @XmlTransient
    public String getCtsHobbyShoppingFlg() {
        return ctsHobbyShoppingFlg;
    }

    @XmlTransient
    public String getCtsHobbySportFlg() {
        return ctsHobbySportFlg;
    }

    @XmlTransient
    public String getCtsHobbyTravelFlg() {
        return ctsHobbyTravelFlg;
    }

    @XmlTransient
    public String getCtsIndustry() {
        return ctsIndustry;
    }

    @XmlTransient
    public String getCtsLanguage() {
        return ctsLanguage;
    }

    @XmlTransient
    public String getCtsLastName() {
        return ctsLastName;
    }

    @XmlTransient
    public String getCtsWord() {
        return ctsWord;
    }

    @XmlTransient
    public String getEducationalBackground() {
        return educationalBackground;
    }

    @XmlTransient
    public String getPartyTypeCode() {
        return partyTypeCode;
    }

    @XmlTransient
    public String getRace() {
        return race;
    }

    @XmlTransient
    public String getSuppressAllSMS() {
        return suppressAllSMS;
    }

    @XmlTransient
    public ListOfContactOrganization getListOfContactOrganization() {
        return listOfContactOrganization;
    }

    @XmlTransient
    public ListOfAlternatePhone getListOfAlternatePhone() {
        return listOfAlternatePhone;
    }

    @XmlTransient
    public ListOfLoyCommunicationFax getListOfLoyCommunicationFax() {
        return listOfLoyCommunicationFax;
    }

    @XmlTransient
    public ListOfLoyCommunicationSms getListOfLoyCommunicationSms() {
        return listOfLoyCommunicationSms;
    }

    @XmlTransient
    public ListOfPersonalAddress getListOfPersonalAddress() {
        return listOfPersonalAddress;
    }

    @XmlTransient
    public ListOfCtsMobilePhone getListOfCtsMobilePhone() {
        return listOfCtsMobilePhone;
    }
}
